package com.example.entity;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class ListMapConverterJava8 {

    /**
     * 使用Stream API转换，保持顺序
     * 后面的键会覆盖前面的键
     */
    public static Map<String, Object> convert(List<Map<String, Object>> listMap) {
        return listMap.stream()
                .filter(map -> map != null)
                .flatMap(map -> map.entrySet().stream())
                .collect(Collectors.toMap(
                        Map.Entry::getKey,
                        Map.Entry::getValue,
                        (oldValue, newValue) -> newValue, // 键冲突时取新值
                        LinkedHashMap::new // 保持插入顺序
                ));
    }

//    /**
//     * 使用Stream API转换，保持顺序
//     * 键冲突时将值收集到List中
//     */
//    public static Map<String, Object> convertWithListValues(List<Map<String, Object>> listMap) {
//        return listMap.stream()
//                .filter(map -> map != null)
//                .flatMap(map -> map.entrySet().stream())
//                .collect(Collectors.toMap(
//                        Map.Entry::getKey,
//                        entry -> {
//                            List<Object> list = new ArrayList<>();
//                            list.add(entry.getValue());
//                            return list;
//                        },
//                        (oldList, newList) -> {
//                            oldList.addAll(newList);
//                            return oldList;
//                        },
//                        LinkedHashMap::new
//                ));
//    }
}

